<?php
/*
 * Page Seleccion de Evaluacion.
 * @Autor: Andrés Ubilla.
 */
class Seleccion extends TPage{
    public function onLoad($param){
        parent::onLoad($param);
        if(!$this->IsPostBack){
            $this->validarSession();
            $this->cargarInterfaz();
        }
    }
    
    private function cargarInterfaz(){        
        $oPaciente = $this->obtenerDatosPaciente();
        $oEvaluacion = $this->obtenerUltimaEvaluacionPaciente();
        $this->iniciarControles($oPaciente, $oEvaluacion);
    }

    private function validarSession(){
        $oUsuario = Util::getSession("Usuario");
        if(Util::isNullOrEmpty($oUsuario)){
            $this->Response->redirect($this->Service->constructUrl("Home"));
        }
    }
    
    private function obtenerDatosPaciente(){
        try{
            $idPaciente = Util::isNull($this->Request["idPaciente"], "-1");

            $oPaciente = new Paciente();        

            if($idPaciente != "-1"){
                $oPacienteBLL = new PacienteBLL();
                $oPaciente = $oPacienteBLL->obtenerPorId($idPaciente);

                return $oPaciente;
            }else{              
                $oPaciente = null;
                return $oPaciente;
            }
        } catch (Exception $e){
            throw new Exception($e->getMessage());
        }        
    }
    
    private function obtenerUltimaEvaluacionPaciente(){
        $idPaciente = Util::isNull($this->Request["idPaciente"], "-1");
        
        $oEvaluacion = new HistorialEvaluaciones();
        $oEvaluacionBLL = new HistorialEvaluacionesBLL();
        
        $oEvaluacion = $oEvaluacionBLL->obtenerUltimaEvaluacion($idPaciente);
        
        return $oEvaluacion;
    }

    private function iniciarControles($oPaciente, $oEvaluacion){
        $this->AutoComplete->Attributes->Add("placeholder","Buscar paciente por rut o nombre");
        
        if($oPaciente != null){
            try{                
                $this->litNombrePaciente->Text = $oPaciente->getNombre() ." ". $oPaciente->getApellido();
                $this->imgPaciente->ImageUrl = $oPaciente->getImagen();
                $this->litEvaluacionAntropometrica->Text = "<a href='?page=Evaluacion.Antropometrica&idPaciente=".$oPaciente->getId()."'><img src='./themes/default/img/antropometrica.png' /><span class='label label-success'>Evaluaci&oacute;n Antropometrica</span></a>";
                $this->litEvaluacionMinima->Text = "<a href='?page=Evaluacion.Minima&idPaciente=".$oPaciente->getId()."'><img src='./themes/default/img/normal.png' /><span class='label label-success'>Evaluaci&oacute;n M&iacute;nima</span></a>";
            }catch(Exception $e){
                throw new Exception($e->getMessage());
            }
        }else{
            $this->litAlert->Text = Util::setMensajeUsuario("Para registrar una evaluaci&oacute;n debe seleccionar un paciente <a href='?page=Paciente.Listar'>AQU&Iacute;</a> o en el buscador superior.", Util::MENSAJE_INFO);
            $this->litEvaluacionAntropometrica->Text = "<a href='?page=Evaluacion.Antropometrica'><img src='./themes/default/img/antropometrica.png' /><span class='label label-success'>Evaluaci&oacute;n Antropometrica</span></a>";
            $this->litEvaluacionMinima->Text = "<a href='?page=Evaluacion.Minima'><img src='./themes/default/img/normal.png' /><span class='label label-success'>Evaluaci&oacute;n M&iacute;nima</span></a>";
        }
        
        if($oEvaluacion != null && $oEvaluacion->getNumeroEvaluacion() != 0){
            try{
                $resto = ($oEvaluacion->getNumeroEvaluacion() + 1) % 4;
                if($resto == 0){
                    $evaluacionRecomenda = "Antropometrica";
                }else{
                    $evaluacionRecomenda = "M&iacute;nima";
                }
                $this->litNumeroUltimaEvaluacion->Text = "<span style='font-size: 16px;'>N&uacute;mero de evaluaciones:</span> <br><span class='label label-info'>Total: ".$oEvaluacion->getNumeroEvaluacion()."</span>";
                $this->litFechaUltimaEvaluacion->Text = "<span style='font-size: 16px;'>Fecha &uacute;ltima evaluaci&oacute;n:</span> <br><span class='label label-info'>".Util::fechaDateTimeANormal($oEvaluacion->getFechaEvaluacion())."</span>";
                $this->litEvaluacionRecomendada->Text = "<span style='font-size: 16px;'>Evaluaci&oacute;n recomendada:</span> <br><span class='label label-info'>".$evaluacionRecomenda."</span>";
            }catch(Exception $e){
                throw new Exception($e->getMessage());
            }
        }else{
            $this->litNumeroUltimaEvaluacion->Text = "<span style='font-size: 16px;'>N&uacute;mero de evaluaciones:</span> <br><span class='label label-info'>Total: 0</span>";
            $this->litFechaUltimaEvaluacion->Text = "<span style='font-size: 16px;'>Fecha &uacute;ltima evaluaci&oacute;n:</span> <br><span class='label label-info'>Sin evaluaciones</span>";
            $this->litEvaluacionRecomendada->Text = "<span style='font-size: 16px;'>Evaluaci&oacute;n recomendada:</span> <br><span class='label label-info'>Antropometrica</span>";
        }
    }
    
    public function buscarPacientes($sender,$param) {        
        $consulta = $param->getToken();
        
        $oPacienteBLL = new PacienteBLL();
        
        $arrPacientes = $oPacienteBLL->obtenerPorBusqueda($consulta);
        $listaPacientes = array();
                
        foreach ($arrPacientes as $row){
            $paciente = array('id' => $row->getId(), 'paciente' => $row->getNombre());
            $listaPacientes[] = $paciente;
        }

        $this->AutoComplete->DataSource = $listaPacientes;
        $this->AutoComplete->dataBind();
    }
    
    public function pacienteSeleccionado($sender,$param){              
        $id = $sender->Suggestions->DataKeys[ $param->selectedIndex ];
        
        if($id > 0){
            Util::setSession("Paciente", $id);
            $this->Response->redirect("index.php?page=Evaluacion.Seleccion&idPaciente=" . $id);
        }else{
            $this->Response->redirect("index.php?page=Paciente.Listar");
        }        
    }
}
?>
